262. PostgreSQL on k8s
WHY
RD說他的資料庫用量應該是很小、非常小,
所以用不到GCP的Cloud SQL,
加上他的資料,根據他本人說法,不重要,隨時可以刪除。
所以就自己建了。
Solution
安裝
查了一個上午,
還是一整個混亂,看起來大部分的人都是用Helm架設的。
然後都是朝高可用性下去執行。
但我應該是用不到,要到達高可用性就用GCP原生方案了。
最後問了GPT,歷經了一些錯誤。
搞出了下面的yaml。
apiVersion: v1
kind: Namespace
metadata:
name: database
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgresql
namespace: database
labels:
app: postgresql
spec:
replicas: 1
selector:
matchLabels:
app: postgresql
template:
metadata:
labels:
app: postgresql
spec:
containers:
- name: postgres
image: postgres:17
ports:
- containerPort: 5432
env:
- name: POSTGRES_USER
value: admin
- name: POSTGRES_PASSWORD
value: ifQiD
- name: POSTGRES_DB
value: main
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
volumeMounts:
- name: postgres-data
mountPath: /var/lib/postgresql/data
volumes:
- name: postgres-data
persistentVolumeClaim:
claimName: postgres-pvc
---
apiVersion: v1
kind: Service
metadata:
name: postgresql
namespace: database
labels:
app: postgresql
spec:
type: ClusterIP
ports:
- port: 5432
targetPort: 5432
selector:
app: postgresql
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-pvc
namespace: database
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
驗證連線
apt update
apt install postgresql-client
#驗證版本
psql --version
# connection
psql -h postgresql.database.svc.cluster.local -p 5432 -U admin -d main
# 確認目前連接的資料庫
SELECT current_database();
結論
如果要改用高可用性的話,GCP文件有教學,在 GKE 上部署高可用性 PostgreSQL 資料庫
補充說明
Artifact Hub : CNCF基金會孵化專門用來尋找雲端軟體的網頁。
ref.